Ejemplo 02 de CNC: Decodificación en línea con variables
Ver el CNC02_online.project
proyecto de ejemplo en el directorio de instalación de CODESYS bajo ..\CODESYS SoftMotion\Examples
.
El ejemplo muestra cómo usar variables para decodificar un programa CNC.
Crear un programa NC en el editor CNC
Crear un
CNCOnline
programa con un SoftMotion controlador.Cree una lista de variables globales y declare dos variables.
VAR_GLOBAL g_x: REAL:=100; g_y:REAL:=50; END_VAR
Insertar un Programa CNC objeto nombrado
Example
.Selecciona el Implementación
Din66025
y el Modo de compilaciónSMC_CNC_REF
. Este modo es necesario porque utiliza variables en su programa.Especifique los siguientes bloques de movimiento:
Editor CNC:
Creación de una interfaz de accionamiento y configuración de PLC
Definir una estructura de unidad (p. Ej. CNCdirect
).
Crear un programa IEC
Agregue un POU (CFC) llamado
Path
a la aplicación.La decodificación del programa NC para OUTQUEUE y la verificación de velocidad se realizan en el
Path
programa.Vocación
SMC_CheckVelocities
es requerido.CFC:
Agregue un POU (CFC) llamado
Ipo
a la aplicación.Este programa es casi idéntico al
CNCdirect
proyecto de muestra. Sin embargo, la entrada de datos del interpolador no se corresponde con los nombres de los programas del CNC (ADR(Example)
), sino a la salida OutQueue de los bloques de funciones de preprocesamiento de ruta (checkVel.poqDataOut
).
Crear una tarea para el preprocesamiento de rutas
Porque ha seleccionado el modo de compilación SMC_CNC_REF
, debe realizar la decodificación y el preprocesamiento de ruta en el programa IEC. Este cálculo requiere mucho tiempo. No es necesario que se ejecute en el ciclo del interpolador porque se genera un objeto de ruta por llamada al decodificador, y este objeto se usa normalmente para muchas llamadas al interpolador. Debe cambiar esta operación a una tarea con baja prioridad y llamadas menos frecuentes.
Crear un
PathTask
tarea.Defina los siguientes parámetros:
Prioridad: 10
Intervalo: T # 30 ms
Añade el
Path
POU a la tarea.

En la tarea lenta, al principio se genera aproximadamente un objeto GEOINFO por ciclo. Este objeto se almacena en la estructura OUTQUEUE del bloque de funciones del decodificador. Si la SALIDA está llena, los bloques de funciones de la tarea lenta se detienen hasta que la SALIDA ya no está llena. Esto sucede tan pronto como la tarea rápida procesa el primer objeto GEOINFO y lo elimina de la SALIDA.
Luego, los bloques de función de la tarea lenta se vuelven a activar y llenan la estructura OUTQUEUE.
En la tarea rápida, un punto de ruta de la estructura OUTQUEUE, que el
DataIn
puntos de entrada, se calcula y procesa en cada ciclo. Debido a que un objeto GEOINFO generalmente consta de múltiples puntos de ruta, se necesitan algunos ciclos hasta que el primer objeto GEOINFO sea procesado y eliminado automáticamente por el interpolador.Como el procesamiento de un objeto GEOINFO dura varios ciclos en lugar de su creación, la tarea lenta se puede llamar con menos frecuencia que la tarea rápida.
Sin embargo, los tiempos de las tareas deben seleccionarse de modo que siempre se almacenen suficientes objetos GEOINFO en el último OUTQUEUE de la tarea lenta, evitando así la aparición de datos insuficientes. Esto sucede cuando no hay más objetos GEOINFO disponibles para el interpolador desde DataIn y aún no se ha alcanzado el final de la ruta. En este caso, el interpolador se ralentiza y se detiene hasta que los nuevos elementos de datos vuelven a estar disponibles.
Creación de una interfaz operativa y una interfaz de prueba
La visualización corresponde a la CNCdirect.project
proyecto de muestra. Agregue plantillas adicionales a los nuevos bloques de funciones (SMC_NCDecoder
y SMC_CheckVelocities
). Cree una pantalla también para las variables globales g_x
y g_y
para que pueda comprobar su funcionamiento más tarde en la puesta en servicio.
Puesta en servicio
Compile e inicie el programa creado. El programa ejecuta el movimiento del CNC tan pronto como Execute
Se ha configurado la entrada del decodificador y el interpolador. Si cambia los valores de las variables globales, entonces se utilizan cuando se reinicia el decodificador y la ruta se adapta en consecuencia. Supervise la función del Append
entrada del decodificador también.